export interface Options {
    show?: boolean;
    imageList: string[];
    index?: number;
    scaleStep?: number;
    defaultWidth?: number;
    maskClosable?: boolean;
    rememberState?: boolean;
    onImgLoad?: ({index: number, url: string, dom: HTMLImageElement}) => void;
    onImgError?: ({index: number, url: string, dom: HTMLImageElement}) => void;
}

export interface Props {
    show: boolean;
    instance: Props;
    imageList: string[];
    index: number;
    scaleStep: number;
    defaultWidth: number;
    maskClosable: boolean;
    rememberState: boolean;
}

export interface PreviewActions {
    resume: () => void;
    close: () => void;
    prev: () => void;
    next: () => void;
    setScale: (scale: number) => void;
    setRotate: (rotate: number) => void;
}

export interface ImageProps {
    alt?: string;
    fallback?: string;
    src: string;
    width: string | number;
    height?: string | number;
    placeholder?: string | boolean;
    preview?:
        | boolean
        | {
        visible?: boolean;
        onVisibleChange?: (visible: boolean, prevVisible: boolean) => void;
        getContainer: string | HTMLElement | (() => HTMLElement);
    };
}

export type ImageItem = string | ImageProps;
